package org.example.tool;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import dev.langchain4j.service.spring.AiService;

import static dev.langchain4j.service.spring.AiServiceWiringMode.EXPLICIT;

/**
 * 统一的AI服务接口
 * 整合了产品查询、计算工具等多种功能
 */
@AiService(wiringMode = EXPLICIT,
        chatModel = "qwenChatModel",
        chatMemoryProvider = "chatMemoryProvider",
        tools = {"productTools", "calculatorTools"})  // 整合所有工具
public interface MixAiService {

    /**
     * 与AI助手进行对话交互
     *
     * @param memoryId 会话记忆ID，用于区分不同的对话上下文
     * @param userMessage 用户提出的问题描述
     * @return AI助手对用户问题的回答内容
     */
    @SystemMessage("你是一个助手，请根据用户描述进行回答")
    @UserMessage("请帮我解决一个问题：{{userMessage}}")
    String chatQuestion(@MemoryId int memoryId, @V("userMessage") String userMessage);

    /**
     * 处理用户聊天消息的核心方法
     *
     * @param memoryId 会话记忆ID，用于标识不同的用户会话，确保对话上下文的连续性
     * @param message 用户发送的聊天消息内容
     * @return 返回AI助手对用户消息的回复内容
     */
    @SystemMessage("你是一个电商平台的机器人，帮助用户查询商品信息和配送详情，请记住用户之前询问过的商品，" +
            "以便在后续对话中提供相关的信息")
    String chatShop(@MemoryId String memoryId, @UserMessage String message);



}
